package com.xhsj.user.generalprocess.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xhsj.user.generalprocess.vo.GeneralAuditHistoryVo;
import com.xhsj.user.pms.oareply.dto.WorkFlowScheduleDto;
import org.apache.ibatis.annotations.Mapper;
import com.xhsj.user.generalprocess.entity.TbPamGeneralProcessHiTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 通用流程历史任务表 Mapper 接口
 * </p>
 *
 * @author suxiaolin
 * @since 2021-01-21
 */
@Mapper
public interface TbPamGeneralProcessHiTaskMapper extends BaseMapper<TbPamGeneralProcessHiTask> {


    /**
     * 保存历史流程
     * @author 苏小林
     * @date 2021/1/22 11:00
     * @param: entity
     */
    int saveHistory(@Param("entity") TbPamGeneralProcessHiTask entity,@Param("tableName") String tableName);

    /**
     * 修改历史任务表
     * @author 苏小林
     * @date 2021/1/22 13:50
     * @param: hiTask
     * @param: hiTaskTableName
     */
    void updateById(@Param("entity") TbPamGeneralProcessHiTask entity, @Param("tableName") String tableName);

    /**
     * 查询当前数据历史任务
     * @author 苏小林
     * @date 2021/3/10 10:01
     * @param: id
     * @param: foreign_apply
     * @return: java.util.List<com.xhsj.user.generalprocess.entity.TbPamGeneralProcessHiTask>
     */
    List<TbPamGeneralProcessHiTask> findHisTaskByDataIdAndType(@Param("dataId") Long dataId, @Param("processType") String processType);

    void updateUserIdAndRoleId(@Param("dataId") Long dataId,
                               @Param("nodeId") Long nodeId,
                               @Param("processType") String processType,
                               @Param("userId") Long userId,
                               @Param("roleId") Object roleId);

    // 删除历史表
    void deleteByDataId(@Param("dataId") Long dataId);

//     <!--获取审批每个节点最新历史-->
    List<Map<String, Object>> getNewNodeIdByDataId(@Param("dataId") Long dataId, @Param("processType") String processType);

//    流程历史记录
    IPage<GeneralAuditHistoryVo> getWorkFlowSchedule(Page<GeneralAuditHistoryVo> page, @Param("param") WorkFlowScheduleDto param);
}
